Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Diff</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Diff"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Diff rootpage-Diff skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">diff</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>diff</b> (kurz zu <a href="Amerikanisches_Englisch" title="Amerikanisches Englisch">amerikanisch</a>: <i><span lang="en-US">difference</span> <span lang="de" style="font-style:normal;font-weight:normal">‚Differenz‘</span></i>) ist ein <a href="Unix" title="Unix">Unix</a>-Programm, das die <b>Unterschiede</b> zwischen zwei <a href="Textdatei" title="Textdatei">Textdateien</a> zeilen- bzw. abschnittweise einander gegenüberstellt.
</p>

<div class="mw-heading mw-heading2"><h2 id="Grundlagen">Grundlagen</h2></div>
<p>diff ist eine grundlegende <a href="Kommandozeile" title="Kommandozeile">Kommandozeilenfunktion</a> eines Unixsystems. Eine weite Palette von Computerprogrammen macht sich dies zunutze. Die Ausgabe des Programms geschieht in Textform und wird oft ebenfalls als <i>diff</i> bezeichnet (<a href="Dateiendung" class="mw-redirect" title="Dateiendung">Dateiendung</a> <code>.diff</code>). Das Ausgabeformat ermöglicht eine maschinelle Verarbeitung.
</p><p>Anwendungen in der <a href="Versionsverwaltung" title="Versionsverwaltung">Versionsverwaltung</a> sind vielfältig: So kann die Ausgabe von diff zum Beispiel als Eingabe für das Unix-Programm <a href="Patch_(Unix)" title="Patch (Unix)">patch</a> verwendet werden, um die Änderungen, die diff festgestellt hat, an einer anderen Textdatei auszuführen. Zudem gibt es eine Reihe von Programmen, welche die von diff ausgegebenen Unterschiede in übersichtlicher graphischer Form darstellen. Außerdem bildet diff die Grundlage aller <i><a href="Merge" title="Merge">Merge</a></i>-Funktionen.
</p>
<div class="mw-heading mw-heading2"><h2 id="Programmfunktion">Programmfunktion</h2></div>
<p>Die ersten Versionen des Programms wurden programmiert, um Textdateien zu vergleichen. Seit 1980 unterstützt diff aber auch <a href="Bin%C3%A4rdatei" title="Binärdatei">Binärdateien</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Aufruf">Aufruf</h3></div>
<p>diff wird auf der <a href="Kommandozeile" title="Kommandozeile">Kommandozeile</a> mit den Namen von zwei Textdateien als <a href="Parameter_(Informatik)" title="Parameter (Informatik)">Parameter</a> ausgeführt:
</p>
<pre>$ diff telefonliste2007.txt telefonliste2008.txt
</pre>
<p>Die beiden Textdateien werden zeilenweise verglichen, das heißt, auch wenn sich eine Zeile in den beiden Dateien nur in einem einzelnen Zeichen unterscheidet, interpretiert diff das als eine gelöschte und eine neu eingefügte Zeile.
</p>
<div class="mw-heading mw-heading3"><h3 id="Ausgabe">Ausgabe</h3></div>
<p>Die folgenden zwei Dateien werden mit diff verglichen.
</p>
<table>

<tbody><tr style="vertical-align:top">
<td>telefonliste2007.txt:
<pre>Mayer, Susanne, Lager, -212
Schmid, Carola, Geschäftsleitung, -435
Schmidt, Eberhard, Vertrieb, -479
Schmitt, Marie, Labor, -804
</pre>
</td>
<td>telefonliste2008.txt:
<pre>Mayer, Susanne, Lager, -212
Schmid, Carola, Geschäftsleitung, -435
Schmitt, Marie, Labor, -804
Waldmann, Ernst, Labor, -805
Zundel, Walter, Vertrieb, -476
</pre>
</td></tr></tbody></table>
<p>Die Ausgabe von diff sieht dann so aus:
</p>
<div class="mw-highlight mw-highlight-lang-diff mw-content-ltr" dir="ltr"><pre><span></span><span class="gu">3d2</span>
<span class="gd">&lt; Schmidt, Eberhard, Vertrieb, -479</span>
<span class="gu">4a4,5</span>
<span class="gi">&gt; Waldmann, Ernst, Labor, -805</span>
<span class="gi">&gt; Zundel, Walter, Vertrieb, -476</span>
</pre></div>
<p>Es gibt verschiedene Ausgabeformate. Das obige Beispiel entspricht der Normal-Ausgabe (<i>normal diff</i>) ohne weitere Optionen. Die Zeilen, die mit einer spitzen, öffnenden Klammer beginnen, sind nur in der ersten Datei vorhanden, diejenigen, die mit einer spitzen, schließenden Klammer beginnen, sind nur in der zweiten Datei vorhanden. Zeilen, die in beiden Dateien gleich sind, werden nicht ausgegeben. Die einzelnen Blöcke werden durch sogenannte <i>change commands</i> („Änderungsbefehle“) getrennt, die angeben, welche Aktion (Zeilen hinzufügen – <i>a</i>, ändern – <i>c</i> oder entfernen – <i>d</i>) in welchen Zeilen ausgeführt werden soll.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Das sogenannte <i>vereinheitlichte Format</i> (<i>unified diff</i>) erhält man durch die Option <i>-u</i>. Dabei wird jede Zeile, die nur in der ersten Datei vorkommt, mit einem Minuszeichen gekennzeichnet, und jede Zeile, die nur in der zweiten Datei vorkommt, mit einem Pluszeichen. Den beiden Dateien gemeinsame Zeilen werden durch ein Leerzeichen gekennzeichnet.
</p><p>Gewöhnlich werden dabei nicht alle Zeilen ausgegeben, sondern nur Blöcke von Zeilen, die sich in der Nähe eines Unterschiedes befinden. Am Anfang der Ausgabe stehen zwei Zeilen, die mit drei Minuszeichen respektive drei Pluszeichen gekennzeichnet werden. Sie zeigen die Dateien, auf die sich das diff bezieht. Jeder Block wird mit einer Zeile eingeleitet, die von <a href="%40" class="mw-redirect" title="@">At-Zeichen (@)</a> umgeben ist. Diese zeigt an, in welchen Zeilen der entsprechende Block in beiden Dateien beginnt und, durch ein Komma getrennt, wie lang er in der jeweiligen Datei ist.
</p><p>Ausgabe des oberen Beispiels im unified-diff-Format:
</p>
<div class="mw-highlight mw-highlight-lang-diff mw-content-ltr" dir="ltr"><pre><span></span><span class="gd">--- telefonliste2007.txt 2007-12-28 13:12:34.000000000 +0100</span>
<span class="gi">+++ telefonliste2008.txt 2008-07-28 14:16:26.000000000 +0100</span>
<span class="gu">@@ -1,4 +1,5 @@</span>
<span class="w"> </span>Mayer, Susanne, Lager, -212
<span class="w"> </span>Schmid, Carola, Geschäftsleitung, -435
<span class="gd">-Schmidt, Eberhard, Vertrieb, -479</span>
<span class="w"> </span>Schmitt, Marie, Labor, -804
<span class="gi">+Waldmann, Ernst, Labor, -805</span>
<span class="gi">+Zundel, Walter, Vertrieb, -476</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Geschichte">Geschichte</h2></div>
<p>Das diff-Programm wurde in den frühen 1970er Jahren auf dem <a href="Unix" title="Unix">Unix</a>-<a href="Betriebssystem" title="Betriebssystem">Betriebssystem</a> von <a href="AT%26T" title="AT&amp;T">AT&amp;T</a> <a href="Bell_Labs" class="mw-redirect" title="Bell Labs">Bell Labs</a> in Murray Hill, New Jersey, USA entwickelt. Die endgültige Version, die zu diesem sehr frühen Unix-System gehörte, wurde vollständig von <a href="Douglas_McIlroy" title="Douglas McIlroy">Douglas McIlroy</a> geschrieben. Diese Untersuchungen wurden 1976 in einem Dokument veröffentlicht, das von James W. Hunt mitverfasst wurde, welcher auch eine der anfänglichen Versionen von diff geschrieben hatte.
</p><p>McIlroys Arbeit wurde beeinflusst von Steve Johnsons Vergleichs-Programm auf <a href="GECOS_(Betriebssystem)" title="GECOS (Betriebssystem)">GECOS</a> und Mike Lesks <i>proof</i>-Programm, welches wie diff auch auf <a href="Unix" title="Unix">Unix</a> entstanden ist. Proof produzierte Zeile-für-Zeile-Änderungen wie diff und verwendete dafür spitze Klammern („&gt;“ und „&lt;“), um Zeilen-Einfügungen und Zeilen-Entfernungen in der Ausgabe des Programms darzustellen. Die <a href="Heuristik" title="Heuristik">heuristische</a> Methode, die diese Programme verwendeten, galt als unzuverlässig. Die potentielle Brauchbarkeit eines diff-Tools inspirierte McIlroy, ein neues, robusteres Programm zu entwickeln, welches viele Anwendungsmöglichkeiten hatte, aber trotzdem eine gute Performance in den Prozessor- und Speicher-Limits der <a href="PDP-11" title="PDP-11">PDP-11</a>-<a href="Hardware" title="Hardware">Hardware</a> lieferte. Sein Erfolg war ein Ergebnis der Zusammenarbeit mit den Leuten von Bell Labs, inklusive <a href="Alfred_V._Aho" title="Alfred V. Aho">Alfred V. Aho</a>, Elliot Pinson, <a href="Jeffrey_Ullman" title="Jeffrey Ullman">Jeffrey Ullman</a> und <a href="Harold_S._Stone" title="Harold S. Stone">Harold S. Stone</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Freie_Softwareimplementierungen">Freie Softwareimplementierungen</h2></div>

<p>Das <a href="GNU-Projekt" title="GNU-Projekt">GNU-Projekt</a> stellt eine <a href="Implementierung#Softwaretechnik" title="Implementierung">Implementierung</a> von diff (und diff3, welches drei Dateien vergleicht) im <a href="Programmpaket" title="Programmpaket">Paket</a> zur Verfügung.
</p><p>Etliche Tools, die auf verschiedenen Plattformen laufen, basieren auf der diffutils-Engine des GNU-Projektes und stellen ein graphisches <a href="Frontend" class="mw-redirect" title="Frontend">Frontend</a> für dieselben Informationen dar. Einige dieser Programme können Dateien auch bearbeiten und <a href="Merge" title="Merge">mergen</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Kompare" title="Kompare">Kompare</a>&nbsp;– eine graphische Oberfläche für diff</li>
<li><a href="Meld" title="Meld">meld</a>&nbsp;– sehr umfassende graphische Oberfläche für diff</li>
<li><a href="WinMerge" title="WinMerge">WinMerge</a>&nbsp;– ein Open-Source-Diff für Windows</li>
<li><a href="Patch_(Unix)" title="Patch (Unix)">patch</a>&nbsp;– das Gegenstück zu diff, mit dem Dateien anhand ihrer Unterschiede rekonstruiert werden</li>
<li><a href="Delta-Kodierung" title="Delta-Kodierung">Delta-Kodierung</a>&nbsp;– ein Datenkompressionsverfahren, bei dem bei ähnlichen Dateien nur die Unterschiede zur Ausgangsdatei gespeichert werden, beispielsweise bei <a href="Versionsverwaltung" title="Versionsverwaltung">Versionsverwaltungen</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>James W. Hunt, M. Douglas McIlroy: <cite class="lang" lang="en" dir="auto" style="font-style:italic">An Algorithm for Differential File Comparison</cite>. In: <cite class="lang" lang="en" dir="auto" style="font-style:italic">Computing Science Technical Report</cite>. <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em">&nbsp;</span>41</span>. Bell Laboratories, Juni 1976 (englisch).<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rfr_id=info:sid/de.wikipedia.org:Diff&amp;rft.atitle=An+Algorithm+for+Differential+File+Comparison&amp;rft.au=James+W.+Hunt%2C+M.+Douglas+McIlroy&amp;rft.date=1976-06&amp;rft.genre=journal&amp;rft.issue=41&amp;rft.jtitle=Computing+Science+Technical+Report&amp;rft.pub=Bell+Laboratories" style="display:none">&nbsp;</span></li>
<li>David MacKenzie, Paul Eggert, Richard Stallman: <cite class="lang" lang="en" dir="auto" style="font-style:italic">Comparing and Merging Files with GNU Diff and Patch</cite>. 2002, ISBN 0-9541617-5-0 (englisch).<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Diff&amp;rft.au=David+MacKenzie%2C+Paul+Eggert%2C+Richard+Stallman&amp;rft.btitle=Comparing+and+Merging+Files+with+GNU+Diff+and+Patch&amp;rft.date=2002&amp;rft.genre=book&amp;rft.isbn=0954161750" style="display:none">&nbsp;</span></li>
<li>E. Myers: <cite class="lang" lang="en" dir="auto" style="font-style:italic">An O(ND) Difference Algorithm and Its Variations</cite>. In: <cite class="lang" lang="en" dir="auto" style="font-style:italic">Algorithmica</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em">&nbsp;</span>1</span>, <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em">&nbsp;</span>2</span>, 1986, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em">&nbsp;</span>251–266</span> (englisch, <a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927">CiteSeerX</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rfr_id=info:sid/de.wikipedia.org:Diff&amp;rft.atitle=An+O%28ND%29+Difference+Algorithm+and+Its+Variations&amp;rft.au=E.+Myers&amp;rft.date=1986&amp;rft.genre=journal&amp;rft.issue=2&amp;rft.jtitle=Algorithmica&amp;rft.pages=251-266&amp;rft.volume=1" style="display:none">&nbsp;</span></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<div class="sisterproject" style="margin:0.1em 0 0 0;"><div class="noresize noviewer" style="display:inline-block; line-height:10px; min-width:1.6em; text-align:center;" aria-hidden="true" role="presentation"><span class="mw-default-size" typeof="mw:File"><span title="Commons"></span></span></div><b><span class=""><a class="external text" href="https://commons.wikimedia.org/wiki/Category:File_comparison?uselang=de"><span lang="en">Commons</span>: File comparison</a></span></b>&nbsp;– Sammlung von Bildern, Videos und Audiodateien</div>
<ul><li><a href="Manpage" title="Manpage">Manpages</a>:
<ul><li><code><a rel="nofollow" class="external text" href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/diff.html">diff</a></code>:&nbsp;compare two files&nbsp;–&nbsp;<a href="Open_Group" title="Open Group">Open Group</a> Base Specification</li>
<li><code><a rel="nofollow" class="external text" href="http://manpages.debian.org/cgi-bin/man.cgi?apropos=0&amp;format=html&amp;query=diff&amp;sektion=1&amp;locale=de">diff(1)</a></code>:&nbsp;Dateien zeilenweise vergleichen&nbsp;–&nbsp;<a href="Debian" title="Debian">Debian GNU/Linux</a> Ausführbare Programme oder Shell-Befehle <a href="Manpage" title="Manpage">Handbuchseite</a></li>
<li><code><a rel="nofollow" class="external text" href="https://man.openbsd.org/cgi-bin/man.cgi?query=diff&amp;sec=1">diff(1)</a></code>:&nbsp;differential file and directory comparator&nbsp;–&nbsp;<a href="OpenBSD" title="OpenBSD">OpenBSD</a> General Commands <a href="Manpage" title="Manpage">Manual</a></li></ul></li>
<li><a rel="nofollow" class="external text" href="https://curlie.org/Computers/Software/File_Management/File_Comparison/">Linkkatalog zum Thema Diff</a> bei <i>curlie.org</i> (ehemals <a href="DMOZ" title="DMOZ">DMOZ</a>)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Normal.html"><i>Comparing and Merging Files&nbsp;– Detailed Description of Normal Format.</i></a> In: <i>GNU Diffutils Manual.</i><span class="Abrufdatum"> Abgerufen am 17.&nbsp;Februar 2009</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3ADiff&amp;rft.title=Comparing+and+Merging+Files%26nbsp%3B%E2%80%93+Detailed+Description+of+Normal+Format&amp;rft.description=Comparing+and+Merging+Files%26nbsp%3B%E2%80%93+Detailed+Description+of+Normal+Format&amp;rft.identifier=https%3A%2F%2Fwww.gnu.org%2Fsoftware%2Fdiffutils%2Fmanual%2Fhtml_node%2FDetailed-Normal.html">&nbsp;</span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-10-04" href="https://de.wikipedia.org/wiki/?title=Diff&amp;oldid=260300893">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>